/**
 * ElTable展示数据的配置
 * 通过传递ElTableColumnSettings数组可以决定el-table组件的显示内容
 * **/
type ElTableColumnSetting = {
  columnName: string;
  columnVerboseName: string;
  columnWidth: number;
  columnValueConverter: (value: any) => any;
};

/**
 * ElTable的操作选项
 * **/
type ElTableOptions = {
  // 是否开启删除操作
  allowDelete: boolean;

  // 单个删除函数
  deleteFunc: (value: any) => any;

  // 是否开启批量删除
  allowDeleteMany: boolean;

  // 批量删除函数
  deleteManyFunc: (value: any) => any;

  // 是否开启编辑
  allowEdit: boolean;

  // 加载数据的函数
  dataLoadFunc: (pageIndex: number, pageSize: number, filter: any) => any;

  // 修改组件
  updateDialog: any;

  // 新增组件
  createDialog: any;

  // 是否显示标题
  showTitle: boolean;

  // 标题设置
  title: string;

  // 筛选列表  可以用于对数据进行筛选
  filterList: Array<DataFilterSetting>;

  // 排序列表
  orderList: Array<DataOrderSetting>;

  // 分页尺寸
  pageSize: number;

  // 附加操作
  additionOptions?: Array<TableAdditionOption>;
};

type TableAdditionOption = {
  optionName: string;
  optionCallback: (data: any) => {};
};
